<?php

namespace common\components\sms;

use yii\base\Component;
use yii\base\InvalidParamException;

/**
 * @property Api[] $companys
 */
class Sms extends Component
{
    protected $_companys = [];

    public function setCompanys(array $companys)
    {
        $this->_companys = $companys;
    }

    public function getCompanys()
    {
        $companys = [];
        foreach ($this->_companys as $k => $v){
            $companys[$k] = $this->getCompany($k);
        }
        return $companys;
    }

    /**
     * @param $code
     * @return Api
     */
    public function getCompany($code)
    {
        if (!array_key_exists($code, $this->_companys)) {
            throw new InvalidParamException("未找到sms提供方 '{$code}'.");
        }
        if (!is_object($this->_companys[$code])) {
            $this->_companys[$code] = \Yii::createObject($this->_companys[$code]);
        }

        return $this->_companys[$code];
    }
}